package com.junxonline.instant.admin.service.config;

import com.baomidou.mybatisplus.extension.service.IService;
import com.junxonline.instant.dao.entity.dto.ui.TreeSelectNodeDTO;
import com.junxonline.instant.dao.entity.model.config.Menu;
import com.junxonline.instant.dao.entity.vo.config.MenuVO;
import com.junxonline.instant.common.entity.common.CommonRespPage;

import java.util.List;

/**
 * 菜单管理接口
 *
 * @author JunX
 * @date 2021-06-30
 */
public interface MenuService extends IService<Menu> {

    /**
     * 查询菜单权限树（Tree）
     *
     * @param token token
     * @return List<TreeSelectNodeDTO>
     */
    List<TreeSelectNodeDTO> queryPermissionTree(String token);

    /**
     * 查询上级菜单树（TreeSelect）
     *
     * @return List<TreeSelectNodeDTO>
     */
    List<TreeSelectNodeDTO> queryParentTree();

    /**
     * 查询菜单列表
     *
     * @param vo 请求参数
     * @return List<Menu>
     */
    CommonRespPage<Menu> queryList(MenuVO vo);

    /**
     * 查询菜单
     *
     * @param id ID
     * @return Menu
     */
    Menu query(Long id);

    /**
     * 新增菜单
     *
     * @param menu 请求参数
     */
    void add(Menu menu);

    /**
     * 编辑菜单
     *
     * @param menu 请求参数
     */
    void edit(Menu menu);

    /**
     * 删除菜单
     *
     * @param ids 请求参数
     */
    void delete(List<Long> ids);

}
